Day12-NAT网络地址转换协议

目录

David is 3 years old.
He weights 60 pounds.
He is 4 feet, 6 inches tall.
He has brown hair.
His love is real.
But he is not. ———人工智能


NAT 地址转换协议

什么是 IP?用于表示一个设备的网络地址,设备只要想上网,都需要有IP 地址。

ipv4可用地址:2的 32 次方,43 亿个地址

iot 物联网(internet of things)

ip地址的分类:

公有地址:可以直接在 internet 上传输的(需要收费,花钱向运营商购买)

私有地址:免费的,只能在局域网内进行传输(飞秋/单机游戏的局域网对战)

NAT 协议

为什么会有 NAT 呢?

因为 iPv4 地址不足,企业内部使用私有IP地址。由于私有地址不能直接在互联网上进行传输,所以在与外网通讯时,需要将私有地址转化为共有地址。

NAT 的作用

对数据包中的私有地址和公有地址进行转化,实现内网到外网的访问

NAT 的类型

静态 NAT

通过“手动配置”的方式添加,私有 IP 地址和公有 IP 地址都是 1 对 1 的关系

数据包在从内网到外网时,先查看路由表,再查看 NAT 表

数据包在从外网到内网时,先查看 NAT 表,再查看路由表

静态的 NAT 配置简单,但是由于私有地址和公有地址是一对一的对应关系,所以并不能节省公网 IP。

静态 NAT 可以实现双向访问

动态 NAT(no-pat)

动态 NAT -no pat 本质上还是一个公网地址同时对应一个私有地址,并没有很好的起到节省公有IP 地址的作用,地址池中的地址用尽以后,只能等待被占用的公用IP被释放后,其他主机才能使用它来访问公网。

动态的 NAT 是单向的

PAT端口地址转换(动态)

端口地址转换(PAT),是一种特殊类型的动态网络地址转换(NAT),它允许多个网络设备通过单一的公有IP地址与外部网络(如互联网)通信。PAT的核心原理在于使用不同的端口号来区分经过同一个公有IP地址的多个内部设备的流量。

PAT 端口地址转换分为两种,一种是基于地址池,一种是基于 接口(easy-ip)

1.私有 IP 地址和端口号:

在内部网络中,每个设备都有其私有IP地址。当这些设备尝试与外部网络通信时,它们的请求会首先发送到配置了PAT的路由器或防火墙。

2.映射到公有 IP 地址和唯一端口号

PAT设备接收到内部设备的请求后,会将源私有IP地址和源端口号映射到路由器的公有IP地址和一个唯一的端口号上。这样,即使多个内部设备使用相同的私有IP地址范围,它们的流量也可以通过附加不同的端口号来区分。

3.维护映射表

PAT设备维护一个映射表,记录内部设备的私有IP地址和端口号与公有IP地址和唯一端口号之间的映射关系。这样,当来自互联网的响应返回到公有IP地址时,PAT设备可以查看映射表,确定响应应该转发给哪个内部设备。

4.流量转发

对于从外部网络返回的数据包,PAT设备查看目的端口号,并根据映射表将数据包转发到正确的内部IP地址和端口号。这样,即使多个内部设备共享同一个公有IP地址,它们的会话也能被正确地区分和处理。

5.端口号重用

由于端口号的数量有限(每个IP地址有65535个可用端口),PAT设备需要有效地管理端口号的使用,以支持尽可能多的并发连接。当一个会话结束后,所使用的端口号可以被释放,供新的会话使用。

(重点)端口地址转换的过程

发送:

经过 PAT 转换前数据包 PAT 转换后 PAT 转换后的数据包
源IP 地址 192.168.10.1 源IP 200.1.1.1(公有地址)
源端口 12345(随机打开) 源端口 54321(PAT 指定)
目的 IP 210.1.1.1(服务器地址) 目的 IP 210.1.1.1(服务器地址)
目的端口 80(http) 目的端口 80(http)
其他信息 协议类型、序列号、确认号等 其他信息 协议类型、序列号、确认号等

形成映射表

映射表是用于追踪内部设备与外部世界通信会话的关键数据结构。这个映射表记录了内部网络中每个设备的私有IP地址和端口号与分配给该会话的公网IP地址和端口号之间的对应关系。

简化的 PAT 映射表
内部源地址 内部源端口 转换后的公网 IP 地址 转换后的公网端口 目的IP 地址 目的端口
192.168.10.1 12345 200.1.1.1 53321 210.1.1.1 80
192.168.20.1 12346 200.1.1.1 64321 210.1.1.1 80
192.168.30.1 12347 200.1.1.1 74321 210.1.1.1 80

实际的PAT 映射表

回流:

经过 PAT 转换前数据包 PAT 转换后 PAT 转换后的数据包
源IP 地址 210.1.1.1(服务器地址) 源IP 210.1.1.1(服务器地址)
源端口 80(http) 源端口 80(http)
目的 IP 200.1.1.1(公网 IP) 目的 IP 192.168.10.1(私有 IP)
目的端口 54321(PAT 指定端口) 目的端口 12345(http)
其他信息 协议类型、序列号、确认号等 其他信息 协议类型、序列号、确认号等

NATServer

是一种特殊的静态 NAT,主要应用于外网用户访问内网服务器的场景

NAT Server的对应关系,也是一对一的。

静态 NAT 是 地址的一对一转换,允许外部主机访问内网主机的所有端口,可以双向互访,不安全。

NAT Server 是地址和端口的 一对一转换,只能让外部主机访问内网服务器的特定端口,更加的安全,仅支持单项互访,及外网主动访问内网。一般用于提供外网主机访问内网服务器的场景。

实验(1)静态NAT

出口路由器:
interface g0/0/1  //进入连接公网的接口
nat static global 200.1.1.2 inside 192.168.1.1. //写一条NAT
//将内部的 1.1 地址转换为 200.1.1.2 地址

实验(2)动态 NAT -no pat

配置思路

1.先使用 ACL ,匹配到想要进行 NAT 地址转换的主机 IP

2.创建动态 NAT 地址池

3.在连接公网的接口上联动 ACL使用 NAT 转换

NAT 设备配置: 
acl 2000
rule 5 permit source 192.168.1.0 0.0.0.255  //先抓取想要进行地址转换的 PC机IP
quit 
nat address-group 1 200.1.1.2 200.1.1.8 //创建公网地址池1,设定起始和结束范围
quit
interface g0/0/1  //进入连接公网的接口
nat outbound 2000 address-group 1 no-pat//ACL2000 里的主机,从
                    //该接口往外发的时候,通通转换为group1里的公网地址
                    
display nat session all  //查看NAT 转换信息
display nat address-group verbose //查看 NAT 的地址池信息

实验(3)PAT 端口地址转换(基于地址池)

使用 “IP 地址+端口号”的形式进行转换,一个公有地址可以供大量的私有地址同时去使用访问外网。也称 1对多地址转换。是目前应用最广放,最主流的 NAT 解决方案

nat outbound  2000 address-group 1   //ACL2000 里的主机,从
                    //该接口往外发的时候,通通转换为group1里的公网地址(默认 PAT)

实验(4)PAT 端口地址转换之 easy-ip(基于接口)

利用出接口 IP 地址做 NAT 转换,是最节约公网 IP 地址的的一种 NAT 解决方案。

配置思路

1.使用 ACL 抓取要转换的主机 IP

2.直接在连接公网的接口上使用 nat,调用 acl

nat outbound 2000. //开启 NAT,转换 2000 抓到的IP为公网地址。

实验(5)NAT-server之 http

NAT server 的配置前提,是你需要有一个固定的公网 IP
interface g0/0/1  //进入网关接口
nat server protocol tcp global 200.1.1.2 80 inside 192.168.10.88 80
    //将私有 IP 地址 192.168.10.88 的 80 端口,映射给公网地址 200.1.1.5 的 80 端口
    //这样,外界访问200.1.1.2:80就相当于是访问了我们的 192.168.10.88:80,实现映射 

实验(6)NAT-server之 FTP(特殊)

interface g0/0/1  //进入网关接口
nat server protocol tcp global 200.1.1.2 21 inside 192.168.10.88 21
    //将私有 IP 地址 192.168.10.88 的 21 端口,映射给公网地址 200.1.1.2 的 21 端口
    //这样,外界访问200.1.1.2:21就相当于是访问了我们的 192.168.10.88:21,实现映射 
quit
 nat alg ftp enable //如果ftp数据想通过nat来透传,需要nat中开启alg功能

被NAT 改变的生活

NAT 在IP 地址节约和网络安全性方面带来了显著的好处,但是同时带来的,还有生活中的各种不变,如:

1.端到端连接问题

NAT 改变了数据包的源或目的地址(还有端口号),摧毁了互联网的端到端原则,对于一些需要直接 IP 连接的应用如某些 P2P 应用(下载),NAT 会导致连接建立困难、性能下降或完全无法使用。

C/S 下载示意图

P2P 下载原理示意图

2.IP 地址不透明

NAT 使内部网络设备对外部世界不可见,虽然一定程度上提高了安全性,但同时意味着,外部用户不能直接访问内部网络中的服务(如 FTP 服务、WEB 服务等),除非通过特定的 NAT 配置如端口转发(NAT server),才能实现。

3.性能瓶颈和延迟

所有出入的数据包都必须通过 NAT 设备进行地址转换,在网络流量高的情况下,NAT 设备会成为性能瓶颈